(1). Field of the Invention
The present invention relates to control of data for the generation of three-dimensional images. Specifically, the following discloses a method and circuit for sequencing into a single channel three types of data: texture, color and Z data, for use in generating a three dimensional ("3-D") image.
(2). Related Art
As computers become more powerful, the generation of complex three-dimensional (3-D) graphics images becomes possible. Multiple polygons are typically used to render a 3-D graphics image. The generation of each of the multiple polygons involves combining four categories of information. These four categories are visibility, texture mapping, blending and shading. In order to generate the four categories, three units of data are needed from memory because shading, the process of converting vertex lighting data into pixel lighting data can be computed by many 3-D graphics engines. Thus, typically, only three fetches of pixel data from memory are required.
In order to generate the remaining three categories of information (visibility, texture mapping and blending), three units of data are needed. Computing visibility requires Z coordinate data stored in a Z buffer in memory. Texture mapping requires texture data retrieved from memory. Texture mapping generates a simulation of a two dimensional texture surface which can be applied to the surface of a polygon. Color blending, the process of blending destination colors, requires corresponding color data from memory. Thus, a graphics processor typically needs to execute three fetches to obtain the three units of 3-D graphics data: Z data, texture data, and color data.
In prior art systems, three streams of data or three channels are used to transfer the three units of 3-D graphics data from a memory or source, to a destination, such as a graphics controller. The use of three channels to transfer data requires extra data paths or wires which use up chip or board space increasing the cost of graphics card. In some large graphics card designs, buffers store the three units of data so that the graphics card can obtain the necessary data as needed. However, large buffers also increase the cost of the graphics card.
Thus, it would be desirable to find a more efficient way of transferring the three units of data to a graphics card or processor as needed.